﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace Sped.Sped
{
    /// <summary>
    /// REGISTRO C180: CONSOLIDAÇÃO DE NOTAS FISCAIS ELETRÔNICAS EMITIDAS PELA PESSOA JURÍDICA (CÓDIGO 55) – OPERAÇÕES DE VENDAS
    /// </summary>
    [ClassInterface(ClassInterfaceType.AutoDual)]
    [ProgId("SpedPisCofins.RegC180")]
    [ComVisible(true)]
    public class RegC180 : IBloco
    {
        /// <summary>
        /// Texto fixo contendo "55 " (Código da Nota Fiscal Eletrônica, modelo 55, conforme a Tabela 4.1.1)
        /// </summary>
        public string COD_MOD { get; set; }
        /// <summary>
        /// Data de Emissão Inicial dos Documentos
        /// </summary>
        public DateTime DT_DOC_INI { get; set; }
        /// <summary>
        /// Data de Emissão Final dos Documentos
        /// </summary>
        public DateTime DT_DOC_FIN { get; set; }
        /// <summary>
        /// Código do Item (campo 02 do Registro 0200)
        /// </summary>
        public string COD_ITEM { get; set; }
        /// <summary>
        /// Código da Nomenclatura Comum do Mercosul 
        /// </summary>
        public string COD_NCM { get; set; }
        /// <summary>
        /// Código EX, conforme a TIPI
        /// </summary>
        public string EX_IPI { get; set; }
        /// <summary>
        /// Valor Total do Item
        /// </summary>
        public double VL_TOT_ITEM { get; set; }



        public override bool ValidaRegistro(ref string Erro)
        {
            var ValidacaoOK = true;
            Erro = "";

            if (string.IsNullOrEmpty(this.COD_MOD) || this.COD_MOD != "55")
                this.COD_MOD = "55";

            if (string.IsNullOrEmpty(this.COD_ITEM))
            {
                Erro += "\r\n* Registro C180 - Código do Item não informado.";
                ValidacaoOK = false;
            }

            return ValidacaoOK;
        }

        public override string Layout()
        {
            var Linha = string.Empty;

            Linha += "C180" + this.Delimitador;
            Linha += this.COD_MOD.ToString().Trim() + this.Delimitador;
            Linha += this.DT_DOC_INI.FormatoDataSped().Trim() + this.Delimitador;
            Linha += this.DT_DOC_FIN.FormatoDataSped().Trim() + this.Delimitador;
            Linha += this.COD_ITEM.ToString().Trim() + this.Delimitador;
            Linha += this.COD_NCM.ToString().Trim() + this.Delimitador;
            Linha += this.EX_IPI.ToString().Trim() + this.Delimitador;
            Linha += this.VL_TOT_ITEM.FormatoValorSped(2) + this.Delimitador;

            return Linha.Trim(); 
        }
    }
}
